package cn.javaxxw.springboot.task;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 功能描述:
 * @author  TuYong
 * @date  2022/9/6 11:15
 */
@Component
@Slf4j
public class MyScheduledTask {

    /**
     * cron表达式 每秒执行一次
     */
    @Scheduled(cron = "* * * * * *")
    public void cronTask1(){
        log.info("CronTask---->>>>当方法的执行时间超过任务调度频率时，调度器会在下个周期执行");
        try {
            Thread.sleep(5100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    /**
     * 每次执行间隔2秒
     */
    @Scheduled(fixedRate = 2000)
    public void cronTask2(){
        log.info("fixedRate---->>>>固定频率执行，当前执行任务如果超时，调度器会在当前方法执行完成后立即执行");
    }

    /**
     * 每次执行完成后，间隔2秒再次执行
     */
    @Scheduled(fixedDelay = 2000)
    public void cronTask3(){
        log.info("fixedDelay---->>>>固定间隔执行，从上一次执行任务的结束时间开始算");
    }

    /**
     * 第一次执行延迟2秒，之后每3秒执行一次
     */
    @Scheduled(initialDelay = 2000, fixedRate = 3000)
    public void cronTask4(){
        log.info("fixedRate---->>>>第一此执行延迟2秒后，固定频率执行，当前执行任务如果超时，调度器会在当前方法执行完成后立即执行");
    }
}
